from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, BadData
# 调用dev.py配置文件的导包路径
from django.conf import settings


def generator_access_token(openid):
    """对传入的 openid 进行加密处理, 返回 token"""

    # QQ 登录保存用户数据的 token 有效期
    # settings.SECRET_KEY: 加密使用的秘钥
    # 过期时间: 600s = 10min
    s = Serializer(settings.SECRET_KEY, 600)

    data = {'openid': openid}
    # 用序列化加密
    token = s.dumps(data)
    return token.decode()


def check_access_token(access_token):
    s = Serializer(settings.SECRET_KEY, 600)
    try:
        # 尝试使用对象的 loads 函数
        # 对 access_token 进行反序列化( 类似于解密 )
        # 查看是否能够获取到数据:
        data = s.loads(access_token)
    except BadData:
        # 如果出错, 则说明 access_token 里面不是我们认可的.
        # 返回 None
        return None
    else:
        return data.get('openid')

